Повреждение данных
Повреждение данных относится к ошибкам компьютерных данных, которые случаются во время записи, чтения, сохранения, передачи или обработки данных и которые представляют непредусмотренные изменения в исходных данных. Компьютер, системы передачи и системы хранения предпринимают много мер для поддержания целостности информации или отсутствия ошибок.
В общем случае, когда случается повреждение данных, файл, содержащий эти данные, будет давать неожиданные результаты, когда будет использован системой или приложением. Результат может быть разным, от небольших потерь данных до крушения системы. Например, если файл документа[англ.] разрушен, при попытке пользователем открыть этот файл с помощью редактора документа он может получить сообщение об ошибке, тогда файл может быть либо не открыт вообще, либо открыт с некоторыми искажениями (или в некоторых случаях полностью разрушен). Также, если повреждается файл изображения, большая часть информации теряется.
Некоторые виды вредоносных программ могут намеренно разрушать файлы путём записи мусора, хотя незловредные вирусы могут также непреднамеренно разрушить файлы при попытке получить к ним доступ. Если вирус или троян пытается изменить метод доступа для критичных файлов операционной системы компьютера, вся система может стать неустойчивой.
Некоторые программы могут дать предложение исправить файлы автоматически (при ошибке), а некоторые программы не могут исправить их. Всё зависит от уровня разрушения и встроенной функциональности приложений, обрабатывающих ошибку. Имеется различные причины разрушений.
Обзор
[править | править код]Имеется два типа повреждения данных, связанных с компьютерными системами — нераспознанные и распознанные. Нераспознанное повреждение данных, известное также как скрытое повреждение данных, приводит к наиболее опасным ошибкам, поскольку нет никаких симптомов, что данные неверны. Распознанное повреждение данных может быть постоянным с потерей данных или временным, когда некоторые части системы способны обнаружить и исправить ошибку. В последнем случае никакого фактического повреждения данных нет.
Повреждение данных может произойти на любом уровне системы, от центрального узла до носителей информации. Современные системы пытаются обнаружить разрушения на многих уровнях и затем восстановить данные или исправить разрушение. Почти всегда эта операция успешна, но в очень редких случаях информация, выбранная в системную память, оказывается разрушенной и может вызвать непредсказуемые последствия.
Повреждение данных во время передачи имеет различные причины. Прерывание передачи данных вызывает потерю информации[англ.]. Условия окружающей среды могут влиять на передачу данных, особенно когда имеем дело с методами беспроводной передачи. Плотные облака могут блокировать спутниковую передачу. Беспроводные сети чувствительны к помехам от устройств, таких как микроволновые печи.
Аппаратурные и программные сбои являются двумя основными причинами потери данных[англ.]. Фоновое радиоактивное излучение[англ.], разрушение головок[англ.] и механическое старение или изнашивание устройства попадает в первую категорию, в то время как программные ошибки обычно происходят вследствие ошибок в коде программ. Космические лучи вызывают большинство устранимых ошибок[англ.] в DRAM[1].
Нераспознанные повреждения данных
[править | править код]Некоторые ошибки проходят незамеченными без обнаружения их дисковыми встроенными программами или операционной системой компьютера. Эти ошибки известны как скрытые повреждения данных.
Существует много источников ошибок, кроме самой дисковой системы. Например, кабели могут быть неплотно прикреплены, питание может быть нестабильным[2], может оказывать влияние вибрации, например от громких звуков[3], сети могут внести нераспознанные ошибки передачи,[4] космические лучи и много других подобных причин вызывают программные ошибки памяти[англ.], и так далее. В 39.000 проанализированных систем хранения информации было обнаружено, что 5–10 % ошибок системы были вызваны ошибками во встроенном (прошитом) программном обеспечении систем[5]. Подводя итог, следует указать, что число нераспознанных ошибок по наблюдениям CERN существенно превосходит одной ошибки на каждые 1016 бит[6]. Сетевой магазин Amazon.com признаёт похожую величину повреждения данных в своих системах[7].
Одна из проблем заключается в том, что ёмкость дисковых накопителей растёт постоянно, а доля ошибок в них остаётся неизменной. Скорость повреждения данных всё время остаётся постоянной по времени, это означает, что современные диски ничуть не надёжнее старых. В старых дисках вероятность повреждения данных была очень мала ввиду малого количества запоминаемых данных. В современных дисках вероятность много выше, поскольку они запоминают много больше данных, не становясь более надёжными. Таким образом, скрытые повреждения данных не вызывают серьёзной озабоченности, пока запоминающие устройства остаются относительно малы и медленны. Следовательно, пользователи дисков с малой вместимостью очень редко обнаруживают скрытые повреждения, так что повреждение данных не рассматривалась как проблема, требующая решения. Однако в настоящее время с появлением больших накопителей и очень быстрых RAID контроллеров пользователи способны перенести 1016 бит за достаточно короткое время, так что легко достичь порога повреждения данных[8].
В качестве примера создатель ZFS Джеф Бонвик утверждает, что быстрая база данных в компании Greenplum, которая специализируется на разработке программного обеспечения для больших хранилищ данных и аналитике, обнаруживает разрушение данных каждые 15 минут[9]. В качестве другого примера изучение, проведённое компанией NetApp на более чем 1,5 миллионах HDD в течение 41 месяцев, нашло более чем 400000 скрытых повреждений данных, из которых более 30000 не были обнаружены контроллерами RAID. Ещё одно исследование, осуществлённое ЦЕРН в течение более шести месяцев над более чем 97 петабайт данных, обнаружило около 128 мегабайт полностью разрушенных данных[10][11].
Скрытое повреждение данных может привести к каскадным разрушениям[англ.], при которых система может работать некоторый период времени с необнаруженной начальной ошибкой, которая вызывает постепенное увеличение числа проблем, пока повреждение не будет обнаружено[12]. Например, сбои в метаданных файловой системы могут привести к частичному повреждению нескольких файлов или даже могут сделать недоступной всю файловую систему.
Меры противодействия
[править | править код]Когда повреждение данных ведёт себя как процесс Пуассона, где каждый бит данных имеет независимую малую вероятность изменения, повреждение данных можно обнаружить с помощью контрольных сумм и часто может быть исправлено с помощью кодов коррекции ошибок.
Если обнаружены неисправимые повреждения данных, могут быть использованы процессы, такие как автоматическая повторная передача данных или восстановление из резервной копии. Некоторые уровни RAID-массивов имеют возможность запоминать и использовать биты чётности для запоминаемых на наборе дисков данных и могут восстановить разрушенные данные при выходе из строя одного или нескольких дисков, что зависит от уровня реализованного RAID. Некоторые архитектуры ЦП используют различные прозрачные проверки для обнаружения и смягчения повреждения данных в кэше процессоров, буферах ЦП и вычислительном конвейере. Например, технология Intel Instruction Replay доступна на процессорах Intel Itanium.[13]
Многие ошибки обнаруживаются и исправляются дисководами с помощью ECC/CRC кодов[14], которые запоминаются на диске для каждого сектора. Если дисковод обнаруживает несколько ошибок чтения сектора, он делает копию сбойного сектора в другую часть диска, помечая сбойный сектор как пустой без вовлечения операционной системы (хотя это может быть отложено до следующей записи в сектор). Такое «тихое исправление» может быть проконтролировано с помощью S.M.A.R.T. и для большинства операционных систем доступны средства автоматической проверки дисковода об угрожающих сбоях вследствие ухудшения SMART-параметров.
Некоторые файловые системы, такие как Btrfs, HAMMER, ReFS и ZFS, используют внутреннее контрольное суммирование данных и метаданных для обнаружения скрытого повреждения данных. Кроме того, если разрушение обнаружено и файловая система использует RAID-механизмы, которые обеспечивают избыточность данных, такие файловые системы могут реконструировать разрушенные данные прозрачно[15]. Такой подход позволяет улучшенную защиту целостности данных, покрывающую весь путь данных, что известно как защита данных от начала до конца (англ. end-to-end data protection), по сравнению с другими подходами, которые не распространяются на другие уровни защиты целостности и допускают повреждение данных при переходе данных от одного уровня к другому[16]
Чистка данных[англ.] является другим методом сокращения возможности повреждения данных, когда ошибки диска обнаружены и исправлены, перед тем как накопится много ошибок. Вместо того, чтобы проверять чётность при каждом чтении, чтение проверяется во время регулярного сканирования диска, часто запускаемого как фоновый процесс низкого приоритета. Заметим, что операция «чистки данных» активирует проверку чётности. Если пользователь просто запускает обычную программу, которая читает данные с диска, то чётность не будет проверяться, пока проверка чётности при чтении не будет поддерживаться и не будет разрешена на дисковой подсистеме.
Если применяются подходящие механизмы для обнаружения и лечения повреждения данных, это может обеспечить целостность данных. Это, в частности, важно в коммерческих приложениях (например, в банках), где необнаруженная ошибка могла бы привести к разрушению индекса базы данных или изменить данные, приводя к радикальным эффектам на банковском счёте. При шифровании или сжимании данных малая ошибка может сделать огромный набор данных бесполезным[6].
См. также
[править | править код]- Противодействие:
- Поле целостности данных[англ.]
- ECC-память
- Прямая коррекция ошибок
- Список программного обеспечения восстановления данных (см. ниже)
- Parchive[англ.]
- RAID
- Код Рида-Соломона
Примечания
[править | править код]- ↑ Scientific American. Solar Storms: Fast Facts . Nature Publishing Group (21 июля 2008). Дата обращения: 8 декабря 2009. Архивировано 26 декабря 2010 года.
- ↑ Eric Lowe. ZFS saves the day(-ta)! (Blog). Oracle – Core Dumps of a Kernel Hacker's Brain – Eric Lowe's Blog. Oracle (16 ноября 2005). Дата обращения: 9 июня 2012. Архивировано 5 февраля 2012 года.
- ↑ bcantrill. Shouting in the Datacenter (Video file). YouTube. Google (31 декабря 2008). Дата обращения: 9 июня 2012. Архивировано 3 июля 2012 года.
- ↑ jforonda. Faulty FC port meets ZFS (Blog). Blogger – Outside the Box. Google (31 января 2007). Дата обращения: 9 июня 2012. Архивировано 26 апреля 2012 года.
- ↑ Are Disks the Dominant Contributor for Storage Failures? A Comprehensive Study of Storage Subsystem Failure Characteristics . USENIX. Дата обращения: 18 января 2014. Архивировано 25 января 2022 года.
- ↑ 1 2 Bernd Panzer-Steindel. Draft 1.3 . Data integrity. CERN (8 апреля 2007). Дата обращения: 9 июня 2012. Архивировано 13 октября 2012 года.
- ↑ Observations on Errors, Corrections, & Trust of Dependent Systems . Архивировано 29 октября 2013 года.
- ↑ Silent data corruption in disk arrays: A solution (PDF). NEC (2009). Дата обращения: 24 октября 2013. Архивировано 29 октября 2013 года.
- ↑ A Conversation with Jeff Bonwick and Bill Moore . Association for Computing Machinery (15 ноября 2007). Дата обращения: 6 декабря 2010. Архивировано 16 июля 2011 года.
- ↑ David S. H. Rosenthal (2010-10-01). "Keeping Bits Safe: How Hard Can It Be?". ACM Queue. Архивировано 17 декабря 2013. Дата обращения: 2 января 2014.
- ↑ Lakshmi N. Bairavasundaram; Garth R. Goodson; Shankar Pasupathy; Jiri Schindler. An Analysis of Latent Sector Errors in Disk Drives (неопр.) // Proceedings of the International Conference on Measurements and Modeling of Computer Systems (SIGMETRICS'07). — San Diego, California, United States: ACM, 2007. — June. — С. 289—300. — doi:10.1145/1254882.1254917.
- ↑ David Fiala; Frank Mueller; Christian Engelmann; Rolf Riesen; Kurt Ferreira; Ron Brightwell.: Detection and Correction of Silent Data Corruption for Large-Scale High-Performance Computing . fiala.me. IEEE (ноябрь 2012). Дата обращения: 26 января 2015. Архивировано 7 ноября 2014 года.
- ↑ Steve Bostian. Rachet Up Reliability for Mission-Critical Applications: Intel Instruction Replay Technology (PDF). Intel (2012). Дата обращения: 27 января 2016. Архивировано 2 февраля 2016 года.
- ↑ Read Error Severities and Error Management Logic . Дата обращения: 4 апреля 2012. Архивировано 7 апреля 2012 года.
- ↑ Margaret Bierman; Lenz Grimmer.: How I Use the Advanced Capabilities of Btrfs . Oracle Corporation (август 2012). Дата обращения: 2 января 2014. Архивировано 2 января 2014 года.
- ↑ Yupu Zhang; Abhishek Rajimwale; Andrea C. Arpaci-Dusseau; Remzi H. Arpaci-Dusseau.: End-to-end Data Integrity for File Systems: A ZFS Case Study (PDF). Computer Sciences Department, University of Wisconsin (4 февраля 2010). Дата обращения: 12 августа 2014. Архивировано 26 июня 2011 года.
Литература
[править | править код]Ссылки
[править | править код]- SoftECC: A System for Software Memory Integrity Checking Архивная копия от 13 мая 2016 на Wayback Machine
- A Tunable, Software-based DRAM Error Detection and Correction Library for HPC Архивная копия от 7 ноября 2014 на Wayback Machine
- Detection and Correction of Silent Повреждение данных for Large-Scale High-Performance Computing Архивная копия от 7 ноября 2014 на Wayback Machine
- End-to-end Data Integrity for File Systems: A ZFS Case Study Архивная копия от 14 августа 2017 на Wayback Machine
- DRAM Errors in the Wild: A Large-Scale Field Study Архивная копия от 10 марта 2015 на Wayback Machine
- A study on silent corruptions Архивная копия от 11 ноября 2020 на Wayback Machine, and an associated paper on data integrity (CERN, 2007)
- End-to-end Data Protection in SAS and Fibre Channel Hard Disk Drives Архивная копия от 24 сентября 2015 на Wayback Machine (HGST)
Для улучшения этой статьи желательно:
|